package com.bnd.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import java.util.List;

import com.bnd.common.typehandler.PgTextArrayTypeHandler;
import org.apache.ibatis.type.JdbcType;
import lombok.Data;

/**
 * 
 * @TableName character_info
 */
@TableName(value ="character_info")
@Data
public class CharacterInfo {
    /**
     * 主键；自增ID
     */
    @TableId
    private Long id;

    /**
     * 角色名称；如“哈利·波特”、“苏格拉底”
     */
    private String name;

    /**
     * 角色简介；描述角色背景、性格等信息
     */
    private String intro;

    /**
     * 角色图片URL地址；支持PNG/JPG格式
     */
    private String image;

    /**
     * 音色标识；对应TTS服务中的音色编码
     */
    private String voice;

    /**
     * 是否被收藏；0-未收藏，1-已收藏（用户侧标记）
     */
    private Integer isFavorited;

    /**
     * 系统提示词；定义AI角色的行为和人格特征
     */
    private String prompt;

    /**
     * 角色分类；如“文学”、“历史”、“影视”等
     */
    private String category;

    /**
     * 访问量；记录该角色被查看或使用的次数
     */
    private Integer viewCount;

    /**
     * 是否删除；0-未删除，1-已删除（软删除机制）
     */
    private Integer isDel;

    /**
     * 创建时间；默认当前时间戳
     */
    private Date createTime;

    /**
     * 更新时间；记录最后修改时间
     */
    private Date updateTime;

    /**
     * 角色招呼语
     */
    private String greeting;

    /**
     * 音色url地址
     */
    private String voiceUrl;

    /**
     * 标签列表；用于描述角色的属性和特点
     */
    @TableField(value = "tags", jdbcType = JdbcType.ARRAY, typeHandler = PgTextArrayTypeHandler.class)
    private List<String> tags;

    @Override
    public String toString() {
        return "CharacterInfo{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", intro='" + intro + '\'' +
                ", image='" + image + '\'' +
                ", voice='" + voice + '\'' +
                ", isFavorited=" + isFavorited +
                ", prompt='" + prompt + '\'' +
                ", category='" + category + '\'' +
                ", viewCount=" + viewCount +
                ", isDel=" + isDel +
                ", createTime=" + createTime +
                ", updateTime=" + updateTime +
                ", greeting='" + greeting + '\'' +
                ", voiceUrl='" + voiceUrl + '\'' +
                ", tags=" + tags +
                '}';
    }
}